package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

// m1 是一个处理HTTP请求的处理函数。
// 它的主要作用是在接收到请求时打印"m1"并返回状态码200和内容"m1"到客户端。
// 随后，通过调用c.Abort()阻止后续的处理函数执行。
// 这里使用c.Next()来允许后续的处理函数执行。
func m1(c *gin.Context) {
	fmt.Println("m1...in")
	c.JSON(200, "m1")
	c.Abort()
	c.Next()
	fmt.Println("m1...out")
}

// m2 也是一个处理HTTP请求的处理函数。
// 如果m1没有中断请求处理流程，m2会被执行。
// 它打印"m2"并返回状态码200和内容"m2"到客户端。
func m2(c *gin.Context) {
	fmt.Println("m2...in")
	c.JSON(200, "m2")
	//c.Abort()
	c.Next()
	fmt.Println("m2...ou2")
}

func main() {
	// 初始化gin的默认路由器
	router := gin.Default()
	// 在"/"路径上绑定处理函数m1和m2
	router.GET("/", m1, m2)
	// 启动web服务器，监听8080端口
	router.Run(":8080")
}
